#include <stdio.h>
#include <stdlib.h>


typedef int ElemType;
typedef struct LNode {
    ElemType data;
    struct LNode *next;
} LNode, *LinkList;

//LNode*===*LinkList,两者完全等价
void list_head_insert(LinkList &L) {
    L = (LinkList) malloc(sizeof(LNode));//申请头结点空间,头指针指向头结点
    L->next = NULL;
    ElemType data;
    scanf("%d", &data);
    LNode *s;//用来指向申请的新结点
    while (data != 9999) {
        s = (LinkList) malloc(sizeof(LNode));
        s->data = data;
        s->next = L->next;//s->next指向原本链表的第一个结点
        L->next = s;
        scanf("%d", &data);
    }
}

void Print_list(LinkList L) {
    L = L->next;
    while (L) {
        printf("%3d ", L->data);
        L = L->next;
    }
}
//头插法新建链表实战
int main() {
    LinkList L;//定义链表头指针,(结构体指针类型)
    list_head_insert(L);
    Print_list(L);
    return 0;
}
